unit PesquisaPagamentoProgramado;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UFormPesquisa, DB, DBTables, StdCtrls, Grids, DBGrids, Buttons,
  ExtCtrls, CheckLst, ComCtrls, DBCtrls, Mask, ToolEdit, Spin;

type
  TFPesquisaPagamentoProgramado = class(TFormPesquisa)
    Label6: TLabel;
    DBLCBFornecedor: TDBLookupComboBox;
    Label5: TLabel;
    DBLCBTipoDocumento: TDBLookupComboBox;
    Label7: TLabel;
    DBLCBPortador: TDBLookupComboBox;
    Label2: TLabel;
    ECodigo: TEdit;
    Label1: TLabel;
    CkBTodasEmpresas: TCheckBox;
    Label10: TLabel;
    CLBEmpresas: TCheckListBox;
    SEAnoInicio: TSpinEdit;
    SEAnoFim: TSpinEdit;
    Label3: TLabel;
    CBMesInicio: TComboBox;
    CBMesFim: TComboBox;
    DSTipoDocumento: TDataSource;
    DSPortador: TDataSource;
    DSFornecedor: TDataSource;
    procedure FormCreate(Sender: TObject);
    procedure BtnConsultarClick(Sender: TObject);
    procedure ECodigoKeyPress(Sender: TObject; var Key: Char);
    procedure BtnLimparClick(Sender: TObject);
    procedure BtnSelecionarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure CkBTodasEmpresasClick(Sender: TObject);
    procedure CBMesInicioKeyPress(Sender: TObject; var Key: Char);
    procedure DBLCBFornecedorKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FPesquisaPagamentoProgramado: TFPesquisaPagamentoProgramado;
  S                          :String;
implementation

uses  UGeral, PagamentoProgramado, UDmFinanceiro, UDmGestao;

{$R *.dfm}

procedure TFPesquisaPagamentoProgramado.FormCreate(Sender: TObject);
begin
  inherited;
 QPesquisa.Close;
 QPesquisa.SQL.Clear;
 QPesquisa.SQL.Add('Select Emp_Codigo,Emp_Fantasia from empresa');
 QPesquisa.Open;
 QPesquisa.First;
 CLBEmpresas.Items.Clear;
 while not(QPesquisa.Eof) do
 begin
  CLBEmpresas.Items.Add(QPesquisa.fieldByname('Emp_Codigo').AsString + '-' + QPesquisa.fieldByname('Emp_Fantasia').AsString );
  QPesquisa.Next;
 end;
 CkBTodasEmpresasClick(Sender);
 QPesquisa.Close;
end;

procedure TFPesquisaPagamentoProgramado.BtnConsultarClick(Sender: TObject);
Var
 DataFiltro :Real;
begin
 if (EmpresasDesmarcadas(CLBEmpresas) = CLBEmpresas.Items.Count) then
  CkBTodasEmpresasClick(Sender);
 S:=Concatenaempresas(CLBEmpresas);

 QPesquisa.Close;
 QPesquisa.SQL.Clear;
 QPesquisa.SQL.Add(' Select Pagamento_Programado.Codigo,Forn_Razao,Tipo_Doc_Descricao,Port_Descricao,PlanoContas.descricao as Plano,CentroCusto.Descricao as Centro,PlanoCont_Descricao ');
 QPesquisa.SQL.Add(',Pagamento_Programado.DiaVencimento,Pagamento_Programado.Valor,Pagamento_Programado.PeriodovalidadeIni,Pagamento_Programado.PeriodovalidadeFin ');
 QPesquisa.SQL.Add(' from Pagamento_Programado Left join Fornecedor on Fornecedor = Forn_Codigo Left join tipodocumento on TipoDocumento = Tipo_Doc_Codigo Left join Portador on Portador = Port_Codigo ');
 QPesquisa.SQL.Add(' Left join PlanoContas on Plano = PlanoContas.Codigo Left join CentroCusto on CentroCusto = CentroCusto.Codigo Left join PlanoContabilidade on ContaContabil = PlanoCont_Codigo ');
 QPesquisa.SQL.Add(' Where (Pagamento_Programado.Codigoempresa in ( ' + s + ') )');
 if ECodigo.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (Pagamento_Programado.Codigo = :Cob)');
   QPesquisa.ParamByName('Cob').AsString:= ECodigo.Text;
  end;

 if DBLCBFornecedor.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (Pagamento_Programado.Fornecedor = :Forn)');
   QPesquisa.ParamByName('Forn').AsInteger:= DBLCBFornecedor.KeyValue;
  end;

 if DBLCBTipoDocumento.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (Pagamento_Programado.TipoDocumento = :TipDoc)');
   QPesquisa.ParamByName('TipDoc').AsInteger:= DBLCBTipoDocumento.KeyValue;
  end;

 if DBLCBPortador.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (Pagamento_Programado.Portador = :Port)');
   QPesquisa.ParamByName('Port').AsInteger:= DBLCBPortador.KeyValue;
  end;

 if (CBMesInicio.Text <> '')  and (SEAnoInicio.Value <> 0) then
  begin
   DataFiltro:=StrToDate('01/'+ IntToStr(CBMesInicio.ItemIndex)+ '/' + IntToStr(SEAnoInicio.Value));
   QPesquisa.SQL.Add(' and (PERIODOVALIDADEINI =:DataI) ');
   QPesquisa.ParamByName('DataI').AsDate:=DataFiltro;
  end;

 if (CBMesFim.Text <> '')  and (SEAnoFim.Value <> 0) then
  begin
   DataFiltro:=StrToDate('01/' + IntToStr(CBMesFim.ItemIndex)+ '/' + IntToStr(SEAnoFim.Value));
   QPesquisa.SQL.Add(' and (PERIODOVALIDADEFIN =:DataF) ');
   QPesquisa.ParamByName('DataF').AsDate:=DataFiltro;
  end;

 QPesquisa.SQL.Add(' Order By Codigo,Forn_Razao,DiaVencimento');
 QPesquisa.Open;
 inherited;
 BtnImprimir.Enabled:=false;
end;

procedure TFPesquisaPagamentoProgramado.ECodigoKeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
 if Not(key in ['0'..'9',#8]) then
  key:=#0;
end;

procedure TFPesquisaPagamentoProgramado.BtnLimparClick(Sender: TObject);
begin
  inherited;
 ECodigo.Text:='';
 DBLCBFornecedor.KeyValue:=Null;
 DBLCBTipoDocumento.KeyValue:=Null;
 DBLCBPortador.KeyValue:=Null;
 CBMesInicio.ItemIndex:=0;
 SEAnoInicio.Value:=0;
 CBMesFim.ItemIndex:=0;
 SEAnoFim.Value:=0;

end;

procedure TFPesquisaPagamentoProgramado.BtnSelecionarClick(Sender: TObject);
begin
  inherited;
 {
 FPagamentoProgramado.QPagamentoProgramado.Close;
 FPagamentoProgramado.QPagamentoProgramado.Open;
 FPagamentoProgramado.QPagamentoProgramado.Locate('Codigo',QPesquisa.fieldByname('Codigo').AsString,[loCaseInsensitive]);
 Self.Close;
 }
end;

procedure TFPesquisaPagamentoProgramado.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
 FPagamentoProgramado.Enabled:=true;
 FPagamentoProgramado.Show;
 FPesquisaPagamentoProgramado:=nil;
 inherited;

end;

procedure TFPesquisaPagamentoProgramado.CkBTodasEmpresasClick(
  Sender: TObject);
Var
 i :Integer;
begin
  inherited;
 for i := 0 to CLBEmpresas.Items.Count - 1 do
  begin
   if StrToInt(Copy(CLBEmpresas.Items.Strings[i],1,pos('-',CLBEmpresas.Items.Strings[i])- 1)) = Codigoempresa then
    CLBEmpresas.Checked[i]:=true
   else
    CLBEmpresas.Checked[i]:=CkBTodasEmpresas.Checked;
  end;

end;

procedure TFPesquisaPagamentoProgramado.CBMesInicioKeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
 key:=#0;
end;

procedure TFPesquisaPagamentoProgramado.DBLCBFornecedorKeyDown(
  Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  inherited;
 case key of
  116 : begin //F5
          TDBLookupComboBox(Sender).ListSource.DataSet.Close;
          TDBLookupComboBox(Sender).ListSource.DataSet.Open;
        end ;
   46 : TDBLookupComboBox(Sender).KeyValue:=null;
 end;


end;

end.
